﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ClienteWinMGI.Logica;
using ComunesMGI.DataTypes;
using ComunesMGI.Mensajes;

namespace ClienteWinMGI.Presentacion
{
    public partial class AltaSistema : Form
    {
        private List<DataCliente> _clientes;
        public AltaSistema()
        {
            InitializeComponent();
            ClearValidator();
            CargarClientes();

        }

        private void CargarClientes()
        {
            try
            {
                IClientes ic = LogicaFactory.getInstance().getIClientes();
                _clientes = ic.GetClientes();
                foreach (DataCliente dc in _clientes)
                {
                    cboCliente.Items.Add(dc.Nombre);
                }
                cboCliente.SelectedIndex = -1;
            }
            catch (Exception ex)
            {
                MsgError err = new MsgError("Error", "", ex.Message);
                err.ShowDialog();
            }
        }
        private void ClearValidator()
        {
            imgValidator.Visible = false;
            lblValidator.Visible = false;
        }

        private void ShowValidator(string textoValidator)
        {
            imgValidator.Visible = true;
            lblValidator.Visible = true;
            lblValidator.Text = textoValidator;
        }
        private void btnAgregarCliente_Click(object sender, EventArgs e)
        {
            try
            {
                if (cboCliente.SelectedIndex != -1)
                {
                    if (txtSistema.Text == "")
                    {
                        ShowValidator("Ingrese el nombre del sistema");
                    }
                    else
                    {
                        if (txtSitio.Text == "")
                        {
                            ShowValidator("Debe ingresar el sitio");
                        }
                        else
                        { 
                            ISistemas iSis = LogicaFactory.getInstance().getISistemas();
                            DataCliente actualDc = _clientes.First(dc => dc.Nombre == cboCliente.SelectedItem.ToString());
                            DataSistema ds= new DataSistema(txtSistema.Text,txtSitio.Text,actualDc.Codigo,textBoxURLWS.Text);
                            iSis.AddSistema(ds);
                            MsgNotificacion notif = new MsgNotificacion("Alta exitosa", "Alta exitosa", "Se ha dado con exito el sistema " + txtSistema.Text + " cuyo sitio es " + txtSitio.Text + " para el cliente " + actualDc.Nombre);
                            notif.ShowDialog();
                        }
                    }

                }
                else
                {
                    ShowValidator("Debe seleccionar un cliente");

                }
            }
            catch(Exception ex)
            {
                MsgError err = new MsgError("Error", "", ex.Message);
                err.ShowDialog();
            }
        }

        private void btnCancelarCliente_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
